<html>
<head><meta charset="utf-8"><title>improving bootstrap times for contributor fun and profit · t-compiler · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/index.html">t-compiler</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html">improving bootstrap times for contributor fun and profit</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="209104106"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209104106" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209104106">(Sep 04 2020 at 15:03)</a>:</h4>
<p>Here is a topic that I am going to point the people in <a class="stream" data-stream-id="238009" href="/#narrow/stream/238009-t-compiler.2Fmeetings">#t-compiler/meetings</a> at</p>



<a name="209104365"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209104365" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209104365">(Sep 04 2020 at 15:05)</a>:</h4>
<p>the issue of compile times being an impediment for contributors (new and old) came up (once again) during todays' planning meeting.</p>



<a name="209104393"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209104393" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209104393">(Sep 04 2020 at 15:05)</a>:</h4>
<p>the whole meeting was in <a class="stream-topic" data-stream-id="238009" href="/#narrow/stream/238009-t-compiler.2Fmeetings/topic/planning.20meeting.202020.2E09.2E04">#t-compiler/meetings &gt; planning meeting 2020.09.04</a></p>



<a name="209104457"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209104457" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209104457">(Sep 04 2020 at 15:06)</a>:</h4>
<p>the specific spot where we had some detailed discussion started around <a href="#narrow/stream/238009-t-compiler.2Fmeetings/topic/planning.20meeting.202020.2E09.2E04/near/209102415">here</a> I think</p>



<a name="209104530"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209104530" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209104530">(Sep 04 2020 at 15:06)</a>:</h4>
<p>I wanted to allocate this topic to have a place to continue analysis and brainstorming</p>



<a name="209104532"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209104532" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209104532">(Sep 04 2020 at 15:06)</a>:</h4>
<p><span class="user-mention silent" data-user-id="198054">mark-i-m</span> <a href="#narrow/stream/238009-t-compiler.2Fmeetings/topic/planning.20meeting.202020.2E09.2E04/near/209103100">said</a>:</p>
<blockquote>
<p><span class="user-mention silent" data-user-id="232545">Joshua Nelson</span> <a href="#narrow/stream/238009-t-compiler.2Fmeetings/topic/planning.20meeting.202020.2E09.2E04/near/209102909">said</a>:</p>
<blockquote>
<p><span class="user-mention silent" data-user-id="198054">mark-i-m</span> <a href="#narrow/stream/238009-t-compiler.2Fmeetings/topic/planning.20meeting.202020.2E09.2E04/near/209102890">said</a>:</p>
<blockquote>
<p><span class="user-mention silent" data-user-id="232545">Joshua Nelson</span> <a href="#narrow/stream/238009-t-compiler.2Fmeetings/topic/planning.20meeting.202020.2E09.2E04/near/209102696">said</a>:</p>
<blockquote>
<p>if you're adding new functionality check is not enough, you need to make sure it <em>works</em></p>
</blockquote>
<p>If you have good tests, then the CI does make sure it "works"</p>
</blockquote>
<p>15 minute turnaround times are too slow</p>
</blockquote>
<p>It's better than 30 minutes or more ... :/</p>
</blockquote>
<p>right, this is sort of my point</p>



<a name="209104567"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209104567" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209104567">(Sep 04 2020 at 15:07)</a>:</h4>
<p>the compile times are so bad you <em>have</em> to use CI, and CI is not really fast enough for working on features</p>



<a name="209104584"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209104584" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209104584">(Sep 04 2020 at 15:07)</a>:</h4>
<p>even if you ahve appropriate tests, etc. it's hard to use logging</p>



<a name="209104613"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209104613" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209104613">(Sep 04 2020 at 15:07)</a>:</h4>
<p>yes so there are a couple different issues there</p>



<a name="209104654"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209104654" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209104654">(Sep 04 2020 at 15:07)</a>:</h4>
<p>one is whether "just push to CI" could <em>ever</em> be a reasonable option, e.g. if we got its turnaround time to 0</p>



<a name="209104715"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209104715" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209104715">(Sep 04 2020 at 15:08)</a>:</h4>
<p>and I think its reasonable to say that it would never be anyone's first choice</p>



<a name="209104766"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209104766" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209104766">(Sep 04 2020 at 15:08)</a>:</h4>
<p>it's never going to be zero though, unless you have a way to cache the stage 1 build</p>



<a name="209104783"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209104783" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209104783">(Sep 04 2020 at 15:08)</a>:</h4>
<p>that's the main benefit of local builds, you have great caching</p>



<a name="209104828"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209104828" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209104828">(Sep 04 2020 at 15:08)</a>:</h4>
<p>CI is roughly 7 minutes to get x.py check results and ~35 for a full test run</p>



<a name="209105033"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209105033" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209105033">(Sep 04 2020 at 15:10)</a>:</h4>
<p>I don't think it's feasible to improve that by too much without reducing the work done (not just adding more hardware)</p>



<a name="209105059"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209105059" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209105059">(Sep 04 2020 at 15:10)</a>:</h4>
<p>I could imagine having a separate builder that did cache stuff</p>



<a name="209105068"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209105068" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209105068">(Sep 04 2020 at 15:10)</a>:</h4>
<p>i.e. when I build locally it's ~30 seconds of turnaround for compiling librustdoc</p>



<a name="209105082"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209105082" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209105082">(Sep 04 2020 at 15:10)</a>:</h4>
<p>specifically for the purpose of getting near 0 turn around time</p>



<a name="209105125"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209105125" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209105125">(Sep 04 2020 at 15:10)</a>:</h4>
<p>but if that would <em>still</em> be an unattractive development option</p>



<a name="209105157"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209105157" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209105157">(Sep 04 2020 at 15:11)</a>:</h4>
<p>then I don't think we'd want to dedicate the effort to creating it</p>



<a name="209105163"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209105163" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209105163">(Sep 04 2020 at 15:11)</a>:</h4>
<p>Yes?</p>



<a name="209105194"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209105194" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209105194">(Sep 04 2020 at 15:11)</a>:</h4>
<p>I think we should ask <span class="user-mention" data-user-id="198054">@mark-i-m</span></p>



<a name="209105214"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209105214" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209105214">(Sep 04 2020 at 15:11)</a>:</h4>
<p>and <span class="user-mention" data-user-id="120823">@DPC</span></p>



<a name="209105263"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209105263" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209105263">(Sep 04 2020 at 15:11)</a>:</h4>
<p>I don't use CI to develop currently</p>



<a name="209105287"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209105287" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209105287">(Sep 04 2020 at 15:11)</a>:</h4>
<p>nor do I</p>



<a name="209105370"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209105370" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209105370">(Sep 04 2020 at 15:11)</a>:</h4>
<p>but when I had only my laptop</p>



<a name="209105485"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209105485" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209105485">(Sep 04 2020 at 15:12)</a>:</h4>
<p>(which is quite under-powered compared to my desktop workstation)</p>



<a name="209105526"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209105526" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209105526">(Sep 04 2020 at 15:12)</a>:</h4>
<p>I probably should have leveraged CI <strong>more</strong></p>



<a name="209105626"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209105626" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209105626">(Sep 04 2020 at 15:13)</a>:</h4>
<p>but that brings up another piont</p>



<a name="209105628"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209105628" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209105628">(Sep 04 2020 at 15:13)</a>:</h4>
<p>On really beefy (32T 3950X) I can get a stage 1 build after x.py clean in roughly 4:32. Probably most contributors have way less powerful hardware, but that seems like our "best case" for CI builds, without caching.</p>



<a name="209105663"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209105663" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209105663">(Sep 04 2020 at 15:13)</a>:</h4>
<p><span class="user-mention" data-user-id="198054">@mark-i-m</span> specifically said in the other meeting that this workflow would be an abuse of CI</p>



<a name="209105726"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209105726" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209105726">(Sep 04 2020 at 15:14)</a>:</h4>
<p>which is something that I know I've worried myself about in the past</p>



<a name="209105793"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209105793" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209105793">(Sep 04 2020 at 15:14)</a>:</h4>
<p>in terms of not being sure whether a certain activity would overly tax our CI</p>



<a name="209105834"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209105834" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209105834">(Sep 04 2020 at 15:14)</a>:</h4>
<p>and so I can imagine our contributors having a similar worry, unless it were explicitly stated to be an encouraged workflow</p>



<a name="209105856"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209105856" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209105856">(Sep 04 2020 at 15:14)</a>:</h4>
<p>related: <a href="https://github.com/rust-lang/rust/issues/67357">https://github.com/rust-lang/rust/issues/67357</a></p>



<a name="209105969"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209105969" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209105969">(Sep 04 2020 at 15:15)</a>:</h4>
<p>I think we should encourage use of CI for this, if contributors need to</p>



<a name="209105982"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209105982" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209105982">(Sep 04 2020 at 15:15)</a>:</h4>
<p>I am not worried right now about it being an abuse</p>



<a name="209106038"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106038" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106038">(Sep 04 2020 at 15:15)</a>:</h4>
<p>so I think the infra team needs to be on the same page about that. Or maybe they are</p>



<a name="209106087"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106087" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106087">(Sep 04 2020 at 15:16)</a>:</h4>
<p>I just noted <span class="user-mention" data-user-id="198054">@mark-i-m</span> 's response and so it concerned me.</p>



<a name="209106094"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106094" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106094">(Sep 04 2020 at 15:16)</a>:</h4>
<p>but nonetheless</p>



<a name="209106116"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106116" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106116">(Sep 04 2020 at 15:16)</a>:</h4>
<p>(I say that with an infra hat, though we've not talked about it)</p>



<a name="209106122"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106122" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106122">(Sep 04 2020 at 15:16)</a>:</h4>
<p>even <strong>if</strong> we did encourage use of CI for this</p>



<a name="209106142"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106142" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106142">(Sep 04 2020 at 15:16)</a>:</h4>
<p>it still isn't what we should consider "the solution"</p>



<a name="209106214"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106214" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106214">(Sep 04 2020 at 15:17)</a>:</h4>
<p>because the <em>experience</em> of pushing to CI is not the ideal workflow for learning about the code base</p>



<a name="209106259"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106259" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106259">(Sep 04 2020 at 15:17)</a>:</h4>
<p>yes</p>



<a name="209106283"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106283" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106283">(Sep 04 2020 at 15:17)</a>:</h4>
<p>it's also hard to find things in CI logs</p>



<a name="209106286"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106286" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106286">(Sep 04 2020 at 15:17)</a>:</h4>
<p>(and requires you to publish to the world your WIP work which is .. well, sometimes not what you want to do)</p>



<a name="209106293"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106293" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106293">(Sep 04 2020 at 15:17)</a>:</h4>
<p>(because of everything <span class="user-mention" data-user-id="232545">@Joshua Nelson</span> said above. You want logging. You want to be able to use a debugger. You want to use a performance monitor. You want an IDE. etc)</p>



<a name="209106296"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106296" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106296">(Sep 04 2020 at 15:17)</a>:</h4>
<p>because they're so long</p>



<a name="209106444"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106444" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106444">(Sep 04 2020 at 15:18)</a>:</h4>
<p><span class="user-mention silent" data-user-id="198054">mark-i-m</span> said that it takes 2 hours for them to build the compiler</p>



<a name="209106486"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106486" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106486">(Sep 04 2020 at 15:18)</a>:</h4>
<p>I don't know if that included a from-scratch LLVM build</p>



<a name="209106539"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106539" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106539">(Sep 04 2020 at 15:19)</a>:</h4>
<p>they use system llvm I'm pretty sure</p>



<a name="209106561"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106561" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106561">(Sep 04 2020 at 15:19)</a>:</h4>
<p>but comparing 4m32s to 2h is pretty amazing</p>



<a name="209106611"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106611" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106611">(Sep 04 2020 at 15:20)</a>:</h4>
<p>that excludes llvm building, btw</p>



<a name="209106673"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106673" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106673">(Sep 04 2020 at 15:20)</a>:</h4>
<p>it would not be too hard to ship pre-built llvms or recommend system llvm</p>



<a name="209106688"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106688" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106688">(Sep 04 2020 at 15:20)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116122">simulacrum</span> <a href="#narrow/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit/near/209106673">said</a>:</p>
<blockquote>
<p>it would not be too hard to ship pre-built llvms or recommend system llvm</p>
</blockquote>
<p><a href="https://github.com/rust-lang/rustc-dev-guide/pull/797">https://github.com/rust-lang/rustc-dev-guide/pull/797</a></p>



<a name="209106689"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106689" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106689">(Sep 04 2020 at 15:20)</a>:</h4>
<p><span class="user-mention" data-user-id="116122">@simulacrum</span> that was on a 32 <em>thread</em> machine, right? One of the 16 core 2 threads/core thing?</p>



<a name="209106699"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106699" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106699">(Sep 04 2020 at 15:20)</a>:</h4>
<p><span class="user-mention" data-user-id="116083">@pnkfelix</span> correct</p>



<a name="209106702"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106702" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106702">(Sep 04 2020 at 15:20)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> had objections to that PR</p>



<a name="209106716"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106716" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106716">(Sep 04 2020 at 15:20)</a>:</h4>
<p>I think for debugging llvm</p>



<a name="209106728"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106728" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106728">(Sep 04 2020 at 15:20)</a>:</h4>
<p>but if people can't build it in the first place <span aria-label="shrug" class="emoji emoji-1f937" role="img" title="shrug">:shrug:</span> I feel like we should recommend it</p>



<a name="209106736"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106736" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106736">(Sep 04 2020 at 15:21)</a>:</h4>
<p>my point is we can ship llvm-assert enabled llvms to people easily</p>



<a name="209106758"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106758" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106758">(Sep 04 2020 at 15:21)</a>:</h4>
<p>"easily" =&gt; you tell me to get this done and I can get it done</p>



<a name="209106770"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106770" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106770">(Sep 04 2020 at 15:21)</a>:</h4>
<p>I think we should prefer shipping our own to using system LLVM</p>



<a name="209106797"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106797" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106797">(Sep 04 2020 at 15:21)</a>:</h4>
<p>if we can do it</p>



<a name="209106802"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106802" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106802">(Sep 04 2020 at 15:21)</a>:</h4>
<p>it's just never been a priority because <em>I</em> don't need it, having beefy hardware everywhere</p>



<a name="209106808"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106808" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106808">(Sep 04 2020 at 15:21)</a>:</h4>
<p>since I want to retain the capabiilty to patch LLVM when necessary</p>



<a name="209106838"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106838" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106838">(Sep 04 2020 at 15:22)</a>:</h4>
<p>I mean, we already have the artifacts, it's mostly a matter of downloading them</p>



<a name="209106887"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106887" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106887">(Sep 04 2020 at 15:22)</a>:</h4>
<p>right</p>



<a name="209106891"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106891" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106891">(Sep 04 2020 at 15:22)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116122">simulacrum</span> <a href="#narrow/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit/near/209106838">said</a>:</p>
<blockquote>
<p>I mean, we already have the artifacts, it's mostly a matter of downloading them</p>
</blockquote>
<p>this would be great to have then</p>



<a name="209106898"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106898" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106898">(Sep 04 2020 at 15:22)</a>:</h4>
<p>(at least for common platforms. but I'm not too worried about people trying to do this on like sparc)</p>



<a name="209106911"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106911" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106911">(Sep 04 2020 at 15:22)</a>:</h4>
<p>this is another major blocker I see for new contributors, building llvm</p>



<a name="209106952"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106952" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106952">(Sep 04 2020 at 15:22)</a>:</h4>
<p>I point to system llvm as much as I can but like <span class="user-mention silent" data-user-id="116083">pnkfelix</span> said that doesn't have the patches</p>



<a name="209106960"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106960" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106960">(Sep 04 2020 at 15:22)</a>:</h4>
<p>so if this is a priority for the compiler team, then I can invest time in doing this</p>



<a name="209106974"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209106974" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209106974">(Sep 04 2020 at 15:22)</a>:</h4>
<p>most peoples internet pipe will be wide-enough that's they'd prefer a download over a local build, I imagine.</p>



<a name="209107001"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107001" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107001">(Sep 04 2020 at 15:23)</a>:</h4>
<p>but how much of a gain will it reap</p>



<a name="209107010"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107010" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107010">(Sep 04 2020 at 15:23)</a>:</h4>
<p>they're already downloading <em>an</em> LLVM for the beta compiler</p>



<a name="209107021"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107021" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107021">(Sep 04 2020 at 15:23)</a>:</h4>
<p>(true)</p>



<a name="209107023"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107023" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107023">(Sep 04 2020 at 15:23)</a>:</h4>
<p>so, really, it'll just be one more</p>



<a name="209107034"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107034" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107034">(Sep 04 2020 at 15:23)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116083">pnkfelix</span> <a href="#narrow/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit/near/209106974">said</a>:</p>
<blockquote>
<p>most peoples internet pipe will be wide-enough that's they'd prefer a download over a local build, I imagine.</p>
</blockquote>
<p>while we're at it, could we set bootstrap not to download the llvm git repo if it's already downloading artifacts?</p>



<a name="209107048"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107048" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107048">(Sep 04 2020 at 15:23)</a>:</h4>
<p>that takes like 10 minutes on my connection</p>



<a name="209107072"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107072" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107072">(Sep 04 2020 at 15:23)</a>:</h4>
<p>I am not too worried about one-time costs -- maybe I should be?</p>



<a name="209107108"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107108" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107108">(Sep 04 2020 at 15:24)</a>:</h4>
<p>one time costs hurt &lt; 1 contribution a month the most</p>



<a name="209107138"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107138" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107138">(Sep 04 2020 at 15:24)</a>:</h4>
<p>Well, I know my workflow <em>used</em> to be to proactively make new local clones of rust.git</p>



<a name="209107173"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107173" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107173">(Sep 04 2020 at 15:24)</a>:</h4>
<p>frequent contributors don't run into them as much</p>



<a name="209107177"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107177" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107177">(Sep 04 2020 at 15:24)</a>:</h4>
<p>and for a while there I had various hacky scripts to make copies of locally downloaded artifacts within my rust.git</p>



<a name="209107202"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107202" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107202">(Sep 04 2020 at 15:24)</a>:</h4>
<p>specifically because the download times hurt when building each of those fresh clones</p>



<a name="209107205"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107205" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107205">(Sep 04 2020 at 15:24)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116083">pnkfelix</span> <a href="#narrow/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit/near/209107138">said</a>:</p>
<blockquote>
<p>Well, I know my workflow <em>used</em> to be to proactively make new local clones of rust.git</p>
</blockquote>
<p><a href="https://rustc-dev-guide.rust-lang.org/building/suggested.html#working-on-multiple-branches-at-the-same-time">https://rustc-dev-guide.rust-lang.org/building/suggested.html#working-on-multiple-branches-at-the-same-time</a></p>



<a name="209107271"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107271" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107271">(Sep 04 2020 at 15:25)</a>:</h4>
<p>I know it isn't the standard recommended practice</p>



<a name="209107310"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107310" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107310">(Sep 04 2020 at 15:25)</a>:</h4>
<p>oh actually I didn't even use worktrees in teh first place</p>



<a name="209107314"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107314" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107314">(Sep 04 2020 at 15:25)</a>:</h4>
<p>hmm</p>



<a name="209107348"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107348" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107348">(Sep 04 2020 at 15:25)</a>:</h4>
<p>/me will have to look more at that link later.</p>



<a name="209107430"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107430" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107430">(Sep 04 2020 at 15:26)</a>:</h4>
<p>It still doesn't solve the "I end up downloading a fresh beta" etc</p>



<a name="209107434"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107434" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107434">(Sep 04 2020 at 15:26)</a>:</h4>
<p>right?</p>



<a name="209107445"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107445" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107445">(Sep 04 2020 at 15:26)</a>:</h4>
<p>right</p>



<a name="209107459"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107459" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107459">(Sep 04 2020 at 15:26)</a>:</h4>
<p>worktrees are a pain but less of a pain than redownloading teh repo</p>



<a name="209107463"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107463" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107463">(Sep 04 2020 at 15:26)</a>:</h4>
<p>oh and submodules don't get shared</p>



<a name="209107472"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107472" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107472">(Sep 04 2020 at 15:26)</a>:</h4>
<p>so that doesn't actually resolve the problem</p>



<a name="209107478"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107478" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107478">(Sep 04 2020 at 15:26)</a>:</h4>
<p>right?</p>



<a name="209107488"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107488" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107488">(Sep 04 2020 at 15:26)</a>:</h4>
<p>yeah worktrees don't help too much I think</p>



<a name="209107490"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107490" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107490">(Sep 04 2020 at 15:26)</a>:</h4>
<p>the git trees for submodules are shared</p>



<a name="209107494"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107494" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107494">(Sep 04 2020 at 15:26)</a>:</h4>
<p>i.e. my clones will freshly download new llvm checkouts</p>



<a name="209107497"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107497" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107497">(Sep 04 2020 at 15:26)</a>:</h4>
<p>but not the build cache</p>



<a name="209107524"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107524" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107524">(Sep 04 2020 at 15:27)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232545">Joshua Nelson</span> <a href="#narrow/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit/near/209107490">said</a>:</p>
<blockquote>
<p>the git trees for submodules are shared</p>
</blockquote>
<p>that's not what the thing you linked says...</p>



<a name="209107553"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107553" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107553">(Sep 04 2020 at 15:27)</a>:</h4>
<p>but this should be easy to double-check</p>



<a name="209107561"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107561" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107561">(Sep 04 2020 at 15:27)</a>:</h4>
<p>I'll look at it more later</p>



<a name="209107592"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107592" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107592">(Sep 04 2020 at 15:28)</a>:</h4>
<p>I need to step away in a little bit, but I did want to bring up something else</p>



<a name="209107665"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107665" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107665">(Sep 04 2020 at 15:28)</a>:</h4>
<p><span class="user-mention" data-user-id="232545">@Joshua Nelson</span> are you setting incremental=true in your config.toml ?</p>



<a name="209107678"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107678" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107678">(Sep 04 2020 at 15:28)</a>:</h4>
<p>yes</p>



<a name="209107684"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107684" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107684">(Sep 04 2020 at 15:28)</a>:</h4>
<p>okay</p>



<a name="209107718"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107718" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107718">(Sep 04 2020 at 15:28)</a>:</h4>
<p>and rustc-dev-guide suggests that as a default</p>



<a name="209107720"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107720" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107720">(Sep 04 2020 at 15:28)</a>:</h4>
<p>I suspect its not working well enough (for various reasons)</p>



<a name="209107748"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107748" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107748">(Sep 04 2020 at 15:29)</a>:</h4>
<p>to be clear: compile times <em>for me</em> are ok. not great, but ok</p>



<a name="209107755"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107755" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107755">(Sep 04 2020 at 15:29)</a>:</h4>
<p>some of that is general issues that wg-incr-comp will tackle</p>



<a name="209107773"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107773" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107773">(Sep 04 2020 at 15:29)</a>:</h4>
<p>it's people building the first time that run into these issues</p>



<a name="209107785"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107785" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107785">(Sep 04 2020 at 15:29)</a>:</h4>
<p>but I'm a little curious if there's anything specific to our bootstrap system that we need to address</p>



<a name="209107788"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107788" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107788">(Sep 04 2020 at 15:29)</a>:</h4>
<p>or with not very beefy hardware</p>



<a name="209107803"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107803" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107803">(Sep 04 2020 at 15:29)</a>:</h4>
<p>So I'm not sure I want to work <strong>too</strong> hard to address the first-time builds</p>



<a name="209107838"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107838" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107838">(Sep 04 2020 at 15:29)</a>:</h4>
<p>it's not just first time, it also hurts rebasing</p>



<a name="209107839"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107839" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107839">(Sep 04 2020 at 15:29)</a>:</h4>
<p>because to me its a long edit-compile-debug  that really kills productivity</p>



<a name="209107896"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107896" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107896">(Sep 04 2020 at 15:30)</a>:</h4>
<p>I'm very careful about rebasing because it requires recompiling rustc middle</p>



<a name="209107929"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107929" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107929">(Sep 04 2020 at 15:30)</a>:</h4>
<p>yes I can understand that rebasing runs into the issue</p>



<a name="209107948"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107948" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107948">(Sep 04 2020 at 15:30)</a>:</h4>
<p>and thus I would typically rebase only once-per-day</p>



<a name="209107978"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107978" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107978">(Sep 04 2020 at 15:30)</a>:</h4>
<p>and fire off a build and go do something else for a while</p>



<a name="209107999"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209107999" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209107999">(Sep 04 2020 at 15:30)</a>:</h4>
<p>(that was back when I was restricted to my laptop)</p>



<a name="209108047"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209108047" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209108047">(Sep 04 2020 at 15:31)</a>:</h4>
<p>but you can see what I mean when I say if the edit-compile-debug cycle is long, then we've lost the war?</p>



<a name="209108093"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209108093" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209108093">(Sep 04 2020 at 15:31)</a>:</h4>
<p>yes, definitely</p>



<a name="209108104"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209108104" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209108104">(Sep 04 2020 at 15:31)</a>:</h4>
<p>that's what impacts me the most for sure</p>



<a name="209108119"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209108119" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209108119">(Sep 04 2020 at 15:31)</a>:</h4>
<p>(and I only work on librustdoc <span aria-label="laughing" class="emoji emoji-1f606" role="img" title="laughing">:laughing:</span> )</p>



<a name="209108330"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209108330" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209108330">(Sep 04 2020 at 15:33)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116083">pnkfelix</span> <a href="#narrow/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit/near/209107592">said</a>:</p>
<blockquote>
<p>I need to step away in a little bit, but I did want to bring up something else</p>
</blockquote>
<p>okay now that time has arrived. Sorry we didn't identify any silver bullets.</p>



<a name="209108400"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209108400" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209108400">(Sep 04 2020 at 15:34)</a>:</h4>
<p>I think the caching builder was a great idea as a workaround</p>



<a name="209108422"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209108422" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209108422">(Sep 04 2020 at 15:34)</a>:</h4>
<p>but we should hear from <span class="user-mention" data-user-id="198054">@mark-i-m</span> and <span class="user-mention" data-user-id="120823">@DPC</span> before implementing it</p>



<a name="209108443"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209108443" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209108443">(Sep 04 2020 at 15:34)</a>:</h4>
<p>my biggest worry there</p>



<a name="209108454"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209108454" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209108454">(Sep 04 2020 at 15:34)</a>:</h4>
<p>is false negatives</p>



<a name="209108467"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209108467" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209108467">(Sep 04 2020 at 15:34)</a>:</h4>
<p>that's what bors is for, no?</p>



<a name="209108491"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209108491" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209108491">(Sep 04 2020 at 15:34)</a>:</h4>
<p>i.e. cases where the caching/incremental stuff flags an error</p>



<a name="209108502"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209108502" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209108502">(Sep 04 2020 at 15:35)</a>:</h4>
<p>that isn't a true error</p>



<a name="209108508"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209108508" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209108508">(Sep 04 2020 at 15:35)</a>:</h4>
<p>but a cache artifact</p>



<a name="209108513"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209108513" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209108513">(Sep 04 2020 at 15:35)</a>:</h4>
<p>ahh false negatives, not false positives</p>



<a name="209108533"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209108533" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209108533">(Sep 04 2020 at 15:35)</a>:</h4>
<p>yeah hmm I don't know what to do about those</p>



<a name="209108544"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209108544" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209108544">(Sep 04 2020 at 15:35)</a>:</h4>
<p>I would not have a cache builder I think, we should invest as much as we can in local compile times first</p>



<a name="209108602"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209108602" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209108602">(Sep 04 2020 at 15:35)</a>:</h4>
<p><span class="user-mention" data-user-id="116122">@simulacrum</span> do you see it as a waste of human effort, or of compute resources?</p>



<a name="209108673"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209108673" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209108673">(Sep 04 2020 at 15:36)</a>:</h4>
<p>human effort</p>



<a name="209108686"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209108686" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209108686">(Sep 04 2020 at 15:36)</a>:</h4>
<p>I don't think optimizing cache builder will be easy</p>



<a name="209108696"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209108696" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209108696">(Sep 04 2020 at 15:36)</a>:</h4>
<p>okay</p>



<a name="209108705"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209108705" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209108705">(Sep 04 2020 at 15:36)</a>:</h4>
<p>and it's never as nice as good local builds</p>



<a name="209108723"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209108723" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209108723">(Sep 04 2020 at 15:36)</a>:</h4>
<p>plus, any improvements we make to compile times locally will have an effect on raw CI times too probably</p>



<a name="209108726"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209108726" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209108726">(Sep 04 2020 at 15:36)</a>:</h4>
<p>providing LLVM artifact downloads by default may be most obvious next step</p>



<a name="209108749"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209108749" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209108749">(Sep 04 2020 at 15:37)</a>:</h4>
<p>it won't address edit-compile-cycle that concerns me</p>



<a name="209108753"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209108753" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> DPC <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209108753">(Sep 04 2020 at 15:37)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232545">Joshua Nelson</span> <a href="#narrow/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit/near/209108422">said</a>:</p>
<blockquote>
<p>but we should hear from <span class="user-mention silent" data-user-id="198054">mark-i-m</span> and <span class="user-mention silent" data-user-id="120823">DPC</span> before implementing it</p>
</blockquote>
<p>i'm still fine tuning my workflow on working on rustc at the moment, so part of it could be because of me not setting up stuff properly locally <span aria-label="grinning" class="emoji emoji-1f600" role="img" title="grinning">:grinning:</span></p>



<a name="209108758"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209108758" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209108758">(Sep 04 2020 at 15:37)</a>:</h4>
<p>but it will be good for first-timers</p>



<a name="209108886"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209108886" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209108886">(Sep 04 2020 at 15:38)</a>:</h4>
<p>anyway I will spend some time today on the LLVM thing</p>



<a name="209108919"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209108919" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209108919">(Sep 04 2020 at 15:38)</a>:</h4>
<p>I would also like to start tracking some of this on perf.rlo or similar, so I'll be looking at that</p>



<a name="209108935"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209108935" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209108935">(Sep 04 2020 at 15:38)</a>:</h4>
<p><span class="user-mention silent" data-user-id="120823">DPC</span> <a href="#narrow/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit/near/209108753">said</a>:</p>
<blockquote>
<p><span class="user-mention silent" data-user-id="232545">Joshua Nelson</span> <a href="#narrow/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit/near/209108422">said</a>:</p>
<blockquote>
<p>but we should hear from <span class="user-mention silent" data-user-id="198054">mark-i-m</span> and <span class="user-mention silent" data-user-id="120823">DPC</span> before implementing it</p>
</blockquote>
<p>i'm still fine tuning my workflow on working on rustc at the moment, so part of it could be because of me not setting up stuff properly locally :D</p>
</blockquote>
<p>(let me know if you want tips, lots of suggestions at <a href="https://rustc-dev-guide.rust-lang.org/building/suggested.html">https://rustc-dev-guide.rust-lang.org/building/suggested.html</a>)</p>



<a name="209109177"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209109177" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209109177">(Sep 04 2020 at 15:40)</a>:</h4>
<p>I think <a href="https://github.com/rust-lang/rust/issues/65031">https://github.com/rust-lang/rust/issues/65031</a> would be a good start on the compiler end too</p>



<a name="209109203"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209109203" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209109203">(Sep 04 2020 at 15:40)</a>:</h4>
<p>to make incremental better and memory usage lower</p>



<a name="209110926"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209110926" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mati865 <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209110926">(Sep 04 2020 at 15:56)</a>:</h4>
<p>If we shorten compile times I won't have an excuse to get next gen Ryzen once they are released <span aria-label="rofl" class="emoji emoji-1f923" role="img" title="rofl">:rofl:</span></p>



<a name="209114845"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209114845" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209114845">(Sep 04 2020 at 16:34)</a>:</h4>
<p>Depends on if we shorten them by making them take better advantage of parallelism.</p>



<a name="209115002"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209115002" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209115002">(Sep 04 2020 at 16:36)</a>:</h4>
<p>I really want to blog about this, but my plan for improving compile times would be:</p>
<ol start="0">
<li>by default, just fail the build if there's no system-provided llvm. Building llvm from-source should require explicit descision in config.toml. </li>
<li>split <code>library</code> into a seaprate workspace. Put <code>.rustup-toolchain</code> with <code>beta-xx-xx-xxxx</code> into the <code>library/</code> and make <code>cd library &amp; cargo test</code> just work. This should fix problems with contributing to stdlib. This also involves solving libtest problem.</li>
<li>make <code>rustc</code> build with beta stdlib. This means you need to wait 4 weeks before introducing feature into std and using it in the compiler, but this removes bootstrap. </li>
<li>Now that <code>rustc</code> itself doesn't need special stdlib, uplift <code>.rustup-toolchain</code> to the root of the repository and make <code>cd compiler &amp;&amp; cargo test</code> work.</li>
<li>split <code>compiler</code> into <code>analysis</code> and <code>emit</code>. <code>analysis</code> doesn't depend on linkers and codegen, contains the builk of the compiler (everything up to and including mir-opt), can run <code>check</code> builds, is mostly a sans-io pure function. <code>emit</code> is the wonderful world of LLVM and linkers, and the only part of <code>rustc</code> which genuinely <em>needs</em> weird build process.</li>
</ol>



<a name="209115119"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209115119" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209115119">(Sep 04 2020 at 16:37)</a>:</h4>
<ol start="5">
<li>(for /me specifically) find a more permanent appartment in Berlin to have a place to put a decent desktop PC in.</li>
</ol>



<a name="209115295"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209115295" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> bjorn3 <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209115295">(Sep 04 2020 at 16:39)</a>:</h4>
<blockquote>
<p>make rustc build with beta stdlib. This means you need to wait 4 weeks before introducing feature into std and using it in the compiler, but this removes bootstrap. </p>
</blockquote>
<p>I think the main reason for not using beta libstd is that that would mean that libstd would only work with the rustc in tree and not the beta rustc anymore. This would make life harder for libstd contributors.</p>



<a name="209115507"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209115507" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209115507">(Sep 04 2020 at 16:41)</a>:</h4>
<p>I don't quite follow -- at the moment compiling <code>rustc</code> itself requires <code>master</code> libstd. If we loosen that requirement to <code>beta</code> libstd, that would increase the set of things which are compatible, right?</p>



<a name="209115514"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209115514" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jonas Schievink  [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209115514">(Sep 04 2020 at 16:41)</a>:</h4>
<p>It also means that rustc cannot assume that new lang items are available</p>



<a name="209115748"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209115748" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209115748">(Sep 04 2020 at 16:44)</a>:</h4>
<p>I mean, it would still require <code>master</code> libstd for compiling user code. It's just that for compiling compiler itself we'd use beta.</p>



<a name="209115856"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209115856" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> bjorn3 <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209115856">(Sep 04 2020 at 16:45)</a>:</h4>
<p>If the master libstd is no longer built by beta rustc by default anymore for the first stage, it's support will likely bitrot.</p>



<a name="209116048"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209116048" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jonas Schievink  [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209116048">(Sep 04 2020 at 16:47)</a>:</h4>
<p><span class="user-mention silent" data-user-id="133169">matklad</span> <a href="#narrow/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit/near/209115748">said</a>:</p>
<blockquote>
<p>I mean, it would still require <code>master</code> libstd for compiling user code. It's just that for compiling compiler itself we'd use beta.</p>
</blockquote>
<p>ah, that might work</p>



<a name="209116160"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209116160" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209116160">(Sep 04 2020 at 16:49)</a>:</h4>
<p><span class="user-mention silent" data-user-id="133247">bjorn3</span> <a href="#narrow/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit/near/209115856">said</a>:</p>
<blockquote>
<p>If the master libstd is no longer built by beta rustc by default anymore for the first stage, it's support will likely bitrot.</p>
</blockquote>
<p>maybe we could have CI test this but not require it from contributors?</p>



<a name="209116175"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209116175" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209116175">(Sep 04 2020 at 16:49)</a>:</h4>
<p>but I'm confused at the stages of bootstrapping again and not really following</p>



<a name="209116277"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209116277" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> bjorn3 <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209116277">(Sep 04 2020 at 16:50)</a>:</h4>
<p>A CI test would make life harder for everyone changing the contract between libstd and rustc.</p>



<a name="209116314"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209116314" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209116314">(Sep 04 2020 at 16:50)</a>:</h4>
<p>it would still be <em>possible</em> to test locally</p>



<a name="209116316"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209116316" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209116316">(Sep 04 2020 at 16:50)</a>:</h4>
<p>just not the default</p>



<a name="209116340"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209116340" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209116340">(Sep 04 2020 at 16:51)</a>:</h4>
<p>changing the contract seems not exactly niche, but not super common either</p>



<a name="209116450"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209116450" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209116450">(Sep 04 2020 at 16:52)</a>:</h4>
<p>I mean, it is build by beta rustc in my plan.</p>
<p>So, we have a <code>.rust-toolchain</code> with specific beta in the root of the repository. </p>
<p><code>cd library &amp; cargo test</code> builds and tests libstd(runtime) using rustuped beta compiler. This looks like "just a crate", and tests the bulk of libstd (untested parts are langitems and other integrations with compiler).</p>
<p><code>cd analysis &amp; cargo tests</code> builds and tests rustc using rustuped beta compiler &amp; beta stdlib. It also runs all UI tests which do not require <code>// run-pass</code>. </p>
<p><code>cd emit &amp; cargo test</code>takes <code>analysis</code> and <code>libstd</code> build previously, adds LLVM to the mix and produces a <code>rustc</code> executable capable of actually comping the programs. This finally runs the <code>// run-pass</code> / <code>full-deps</code> tests</p>



<a name="209116560"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209116560" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209116560">(Sep 04 2020 at 16:53)</a>:</h4>
<p>Maaybe in the second step we  want to rely on .rmeta from libstd for the first step (so as not to stub libstd in tests)</p>



<a name="209116669"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209116669" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jonas Schievink  [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209116669">(Sep 04 2020 at 16:54)</a>:</h4>
<p>hmm, how would <code>RUSTC_BOOTSTRAP</code> get set in that scheme?</p>



<a name="209116773"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209116773" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209116773">(Sep 04 2020 at 16:55)</a>:</h4>
<p><del>build.rs</del></p>



<a name="209116781"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209116781" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209116781">(Sep 04 2020 at 16:55)</a>:</h4>
<p>Just a giant hack somewhere, like checking <code>.rustc_bootstrap</code> file on disk. Or maybe just telling the user "set RUSTC_BOOTSTRAP' env var. </p>
<p>At worst, we can <code>cargo xtask test</code></p>



<a name="209117061"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209117061" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209117061">(Sep 04 2020 at 16:57)</a>:</h4>
<p>But the core ideas are:</p>
<ul>
<li>there's no fundamental reason why std is not "just a crate"</li>
<li>there's no fundamental reason why rustc is not "just a crate"</li>
<li>the only hard bit about compilers is interfacing with external tools (llvm &amp; linkers), the rest is pure functions and text processing (should've written rustc in perl /s)</li>
</ul>



<a name="209117378"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209117378" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jonas Schievink  [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209117378">(Sep 04 2020 at 16:59)</a>:</h4>
<p>yeah</p>



<a name="209117502"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209117502" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jonas Schievink  [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209117502">(Sep 04 2020 at 17:00)</a>:</h4>
<p>you can't run UI tests without the libstd from master though, since the beta libstd might be missing lang items</p>



<a name="209117776"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209117776" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209117776">(Sep 04 2020 at 17:02)</a>:</h4>
<p>Yeah, I think the practical solution is to take <code>libstd</code> for building UI tests. In theory, we can stub minimal parts of libstd, like we do in rust-analyzer, but I am afraid that won't work in practice.</p>



<a name="209117851"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209117851" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209117851">(Sep 04 2020 at 17:03)</a>:</h4>
<p>Hm, I think I need to think more about this.... reading <code>.rmeta</code>s adds a dependency edge from <code>analysis</code> to <code>emit</code> , and that's bad...</p>



<a name="209118029"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209118029" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jonas Schievink  [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209118029">(Sep 04 2020 at 17:05)</a>:</h4>
<p>does it?</p>



<a name="209118202"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209118202" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209118202">(Sep 04 2020 at 17:06)</a>:</h4>
<p>Even if you take <code>.rmeta</code> produced by <code>beta</code>, you'd still have to read it....</p>
<p>Wait, I guess analysis is exactly the thing that produces <code>.rmeta</code>s (if we define <code>.rmeta</code> to be clean enough, I have zero idea what's actually incuded there today). So yeah, seems like problem solved, thanks <span class="user-mention silent" data-user-id="211727">Jonas Schievink</span>  :)</p>



<a name="209120894"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209120894" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Charles Lew <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209120894">(Sep 04 2020 at 17:33)</a>:</h4>
<p>I'm still most interested in reducing <code>rustc_middle</code>'s build time. A fresh build of this crate itself takes about 1800 seconds on my machine. And incremental build it (even its code not changed at all) takes about 200 seconds. If there's anything i can help with, i'm happy to help!</p>



<a name="209121328"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209121328" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Charles Lew <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209121328">(Sep 04 2020 at 17:37)</a>:</h4>
<p>Besides, i'm also interested in reducing the generation of so many small <code>.o</code> and <code>.bc.z</code> files under <code>target/incremental</code> directories. I'm on windows and i'm using disk indexing tools (everything.exe). Generating large amount of small files even slows down the whole system.</p>



<a name="209122015"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209122015" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209122015">(Sep 04 2020 at 17:45)</a>:</h4>
<p><span class="user-mention" data-user-id="116458">@Charles Lew</span> You might consider turning off indexing of target and build directories.</p>



<a name="209122136"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209122136" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209122136">(Sep 04 2020 at 17:46)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116458">Charles Lew</span> <a href="#narrow/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit/near/209120894">said</a>:</p>
<blockquote>
<p>I'm still most interested in reducing <code>rustc_middle</code>'s build time. A fresh build of this crate itself takes about 1800 seconds on my machine. And incremental build it (even its code not changed at all) takes about 200 seconds. If there's anything i can help with, i'm happy to help!</p>
</blockquote>
<p>I think there was some discussion of separating it into crates in <a href="https://github.com/rust-lang/rust/issues/65031">https://github.com/rust-lang/rust/issues/65031</a></p>



<a name="209122143"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209122143" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209122143">(Sep 04 2020 at 17:46)</a>:</h4>
<p>that might be a good starting point</p>



<a name="209122172"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209122172" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209122172">(Sep 04 2020 at 17:46)</a>:</h4>
<p><span class="user-mention" data-user-id="133169">@matklad</span> also suggested 'less generics' but it would need someone familiar with that part of the compiler I think</p>



<a name="209122233"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209122233" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Charles Lew <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209122233">(Sep 04 2020 at 17:47)</a>:</h4>
<p><span class="user-mention" data-user-id="239881">@Josh Triplett</span>  yes, i think i can give this a try... thanks for the advice</p>



<a name="209122435"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209122435" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Charles Lew <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209122435">(Sep 04 2020 at 17:49)</a>:</h4>
<p>Actually i'm a little curious about "why is compiling that crate so slow" i've learnt about the <code>-Z self-profile</code> argument before, just haven't investigate into using that yet.</p>



<a name="209122526"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209122526" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209122526">(Sep 04 2020 at 17:50)</a>:</h4>
<p>instructions for self-profile: <a href="https://github.com/rust-lang/measureme/blob/master/summarize/Readme.md">https://github.com/rust-lang/measureme/blob/master/summarize/Readme.md</a></p>



<a name="209122710"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209122710" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Charles Lew <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209122710">(Sep 04 2020 at 17:52)</a>:</h4>
<p>thanks!</p>



<a name="209122791"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209122791" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Léo Lanteri Thauvin <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209122791">(Sep 04 2020 at 17:53)</a>:</h4>
<p>I was about to suggest the official blog post on the feature, but this would probably be more up-to-date</p>



<a name="209123715"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209123715" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209123715">(Sep 04 2020 at 18:02)</a>:</h4>
<p>The instructions in the summarize Readme should up to to date but the blog post covers the rest of the tooling you can use as well <a href="https://blog.rust-lang.org/inside-rust/2020/02/25/intro-rustc-self-profile.html">https://blog.rust-lang.org/inside-rust/2020/02/25/intro-rustc-self-profile.html</a></p>



<a name="209124376"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209124376" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Charles Lew <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209124376">(Sep 04 2020 at 18:08)</a>:</h4>
<p>Thanks, i think i need instructions on using it together with x.py. I'm installing the <code>crox flamegraph summarize</code> tools.</p>



<a name="209125262"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209125262" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Charles Lew <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209125262">(Sep 04 2020 at 18:17)</a>:</h4>
<p>installation finished. now i'm using x.py to update the git submodules. downloading llvm source code now... i think it will take about 15 minutes...</p>



<a name="209126029"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209126029" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Charles Lew <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209126029">(Sep 04 2020 at 18:25)</a>:</h4>
<div class="codehilite"><pre><span></span><code>Updating submodule src/llvm-project
remote: Enumerating objects: 99719, done.
remote: Counting objects: 100% (99719/99719), done.
Receiving objects:  53% (143721/270841), 47.39 MiB | 117.00 KiB/s
</code></pre></div>


<p>finished half</p>



<a name="209128291"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209128291" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Charles Lew <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209128291">(Sep 04 2020 at 18:47)</a>:</h4>
<p><code>Submodules updated in 2058.72 seconds</code></p>



<a name="209128609"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209128609" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Charles Lew <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209128609">(Sep 04 2020 at 18:50)</a>:</h4>
<p>finished downloading beta compiler and now building <code>bootstrap</code>.</p>



<a name="209128720"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209128720" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Charles Lew <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209128720">(Sep 04 2020 at 18:51)</a>:</h4>
<div class="codehilite"><pre><span></span><code>Compiling bootstrap v0.0.0 (L:\ThirdParty\rust\rust-workdir\src\bootstrap)
    Finished dev [unoptimized + debuginfo] target(s) in 1m 47s
</code></pre></div>



<a name="209128724"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209128724" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> cjgillot <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209128724">(Sep 04 2020 at 18:51)</a>:</h4>
<p><span class="user-mention" data-user-id="116458">@Charles Lew</span> IIRC, the issue with middle is the query system, which generates a <em>lot</em> of code for each of the 300 queries. Most of the codegen time is there. Refactoring it may be required at some point.</p>



<a name="209129297"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209129297" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Charles Lew <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209129297">(Sep 04 2020 at 18:56)</a>:</h4>
<p>Oh, by the way it seems <code>ninja</code> is now recommended and there's no instructions for MSVC users on where to get and where to put it though...</p>



<a name="209129452"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209129452" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Charles Lew <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209129452">(Sep 04 2020 at 18:58)</a>:</h4>
<p>Retrieved a binary exe from github and added the dir to PATH and it works fine</p>



<a name="209129654"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209129654" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Charles Lew <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209129654">(Sep 04 2020 at 19:00)</a>:</h4>
<div class="codehilite"><pre><span></span><code>L:\ThirdParty\rust\rust-workdir&gt;python3 x.py check compiler/rustc_middle -- -Z self-profile
Updating only changed submodules
Submodules updated in 0.20 seconds
    Finished dev [unoptimized + debuginfo] target(s) in 0.27s
thread &#39;main&#39; panicked at &#39;error: no rules matched -Z&#39;, src\bootstrap\builder.rs:235:21
stack backtrace:
   0: std::panicking::begin_panic_handler
             at /rustc/0f91f5c284c72e69bb7115586b7756874c59cbbe\/library\std\src\panicking.rs:475
</code></pre></div>



<a name="209129901"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209129901" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Charles Lew <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209129901">(Sep 04 2020 at 19:02)</a>:</h4>
<p>what's the proper way to add a compile flag to <code>x.py check</code>?</p>



<a name="209129953"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209129953" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jonas Schievink  [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209129953">(Sep 04 2020 at 19:03)</a>:</h4>
<p><code>RUSTFLAGS</code>, <code>RUSTFLAGS_BOOTSTRAP</code>, or <code>RUSTFLAGS_NOT_BOOTSTRAP</code></p>



<a name="209130365"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209130365" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Charles Lew <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209130365">(Sep 04 2020 at 19:07)</a>:</h4>
<p>Thanks!</p>



<a name="209132268"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209132268" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Charles Lew <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209132268">(Sep 04 2020 at 19:26)</a>:</h4>
<p>Wow, i feel <code>x.py check</code> runs much much faster than last time i built rustc. Is this the effect of changing the default configuration of <code>debuginfo-level</code>from 2 to 1???!</p>



<a name="209132376"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209132376" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Charles Lew <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209132376">(Sep 04 2020 at 19:27)</a>:</h4>
<p>I'm building llvm and will try <code>x.py build</code> out shortly.</p>



<a name="209132741"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209132741" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209132741">(Sep 04 2020 at 19:31)</a>:</h4>
<p>Hmm, I wouldn't expect that to affect check, only linking</p>



<a name="209132746"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209132746" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209132746">(Sep 04 2020 at 19:31)</a>:</h4>
<p>But maybe</p>



<a name="209132747"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209132747" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209132747">(Sep 04 2020 at 19:31)</a>:</h4>
<p>(deleted)</p>



<a name="209132748"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209132748" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209132748">(Sep 04 2020 at 19:31)</a>:</h4>
<p>(deleted)</p>



<a name="209136478"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209136478" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Charles Lew <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209136478">(Sep 04 2020 at 20:14)</a>:</h4>
<div class="codehilite"><pre><span></span><code>-- Installing: L:/ThirdParty/rust/rust-workdir/build/x86_64-pc-windows-msvc/llvm/lib/cmake/llvm/./VersionFromVCS.cmake
cargo:root=L:\ThirdParty\rust\rust-workdir\build\x86_64-pc-windows-msvc\llvm
        finished in 3096.635
</code></pre></div>


<p>Actually quite a large part (a quarter of it?) of llvm building is building all sorts of executables, which rust doesn't use at all, i think.</p>



<a name="209137201"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209137201" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209137201">(Sep 04 2020 at 20:24)</a>:</h4>
<p>Semi related: I usually disable most of the LLVM targets. I think the set I use currently is "ARM;AARCH64;X86;WebAssembly"</p>



<a name="209137337"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209137337" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209137337">(Sep 04 2020 at 20:25)</a>:</h4>
<p>I am fairly confident in having the llvm build skipped for most contributors so I wouldn't try to optimize its build right now</p>



<a name="209139263"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209139263" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Charles Lew <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209139263">(Sep 04 2020 at 20:48)</a>:</h4>
<p>I usually disable most of the LLVM targets too, just enable "X86".  There're three unit tests in rustc that will fall under this configuration though.</p>



<a name="209139301"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209139301" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Charles Lew <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209139301">(Sep 04 2020 at 20:48)</a>:</h4>
<p>Initial build is done!</p>
<div class="codehilite"><pre><span></span><code>[RUSTC-TIMING] rustc_codegen_llvm test:false 295.645
[RUSTC-TIMING] rustc_interface test:false 248.740
[RUSTC-TIMING] rustc_middle test:false 1572.314
[RUSTC-TIMING] rustc_mir test:false 712.805
   Compiling rustc_driver v0.0.0 (L:\ThirdParty\rust\rust-workdir\compiler\rustc_driver)
[RUSTC-TIMING] rustc_driver test:false 181.361
   Compiling rustc-main v0.0.0 (L:\ThirdParty\rust\rust-workdir\compiler\rustc)
[RUSTC-TIMING] rustc_main test:false 1.146
    Finished release [optimized] target(s) in 33m 16s
</code></pre></div>



<a name="209139362"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209139362" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209139362">(Sep 04 2020 at 20:49)</a>:</h4>
<p>how do you get the RUSTC-TIMING output?</p>



<a name="209139381"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209139381" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Charles Lew <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209139381">(Sep 04 2020 at 20:49)</a>:</h4>
<p>I remember <code>rustc_middle</code> took 1800s last time, so there're 300s improvement since my last full build.</p>



<a name="209139389"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209139389" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Charles Lew <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209139389">(Sep 04 2020 at 20:49)</a>:</h4>
<p>let me see...</p>



<a name="209139403"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209139403" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209139403">(Sep 04 2020 at 20:49)</a>:</h4>
<p><code>print-step-timings</code> looks right</p>



<a name="209139491"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209139491" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Charles Lew <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209139491">(Sep 04 2020 at 20:50)</a>:</h4>
<p>yeah</p>



<a name="209139495"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209139495" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Charles Lew <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209139495">(Sep 04 2020 at 20:50)</a>:</h4>
<p>that's it</p>



<a name="209139711"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209139711" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Charles Lew <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209139711">(Sep 04 2020 at 20:52)</a>:</h4>
<div class="codehilite"><pre><span></span><code>L:\ThirdParty\rust\rust-workdir&gt;summarize summarize rustc_middle-11344
+--------------------------------------------------+-----------+-----------------+----------+------------+
| Item                                             | Self time | % of total time | Time     | Item count |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| LLVM_passes                                      | 1164.79s  | 29.627          | 1165.62s | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| codegen_crate                                    | 578.14s   | 14.705          | 1237.43s | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| LLVM_module_optimize_module_passes               | 525.41s   | 13.364          | 525.41s  | 256        |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| LLVM_thin_lto_import                             | 260.49s   | 6.625           | 260.49s  | 256        |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| finish_ongoing_codegen                           | 218.49s   | 5.557           | 218.71s  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| LLVM_lto_optimize                                | 212.26s   | 5.399           | 212.26s  | 256        |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| codegen_module                                   | 189.05s   | 4.809           | 231.81s  | 256        |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| LLVM_module_codegen_emit_obj                     | 133.01s   | 3.383           | 133.01s  | 256        |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| monomorphization_collector_graph_walk            | 120.19s   | 3.057           | 274.14s  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| incr_comp_serialize_dep_graph                    | 63.82s    | 1.623           | 63.82s   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| free_global_ctxt                                 | 46.06s    | 1.171           | 46.06s   | 1          |
</code></pre></div>



<a name="209139740"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209139740" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209139740">(Sep 04 2020 at 20:53)</a>:</h4>
<blockquote>
<p>LLVM_passes                                      | 1164.79s  | 29.627          | 1165.62s | 1          |</p>
</blockquote>
<p>ouch</p>



<a name="209140620"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209140620" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209140620">(Sep 04 2020 at 21:02)</a>:</h4>
<p>To toss in my 2¢: I was on a i5-2500k from 2011 until a few months ago.  LLVM was definitely the biggest problem for getting started for me -- IIRC the build for that was up around an hour -- so I definitely avoided anything that bumped it if I could.  After that was done, <code>--incremental</code> and <code>--keep-stage N</code> made working on it tolerable.  Not amazing, but also not out of line from the kinds of builds I expect from $job.  But I also never made drastic compiler changes.</p>
<p>(I recently splurged on a 3950x, and _wow_.  That gets a clean LLVM build down to ~5min, which is a whole new ball game.)</p>



<a name="209140886"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209140886" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209140886">(Sep 04 2020 at 21:05)</a>:</h4>
<p>so really we should just ship 3950x's to anyone who contributes a PR, problem solved</p>



<a name="209140967"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209140967" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209140967">(Sep 04 2020 at 21:06)</a>:</h4>
<p>Great job everyone! Rust compile times are solved ;)</p>



<a name="209140978"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209140978" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jonas Schievink  [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209140978">(Sep 04 2020 at 21:06)</a>:</h4>
<p>oof, those timing hurt</p>
<blockquote>
<p>free_global_ctxt                                 | 46.06s</p>
</blockquote>
<p>why does it spend 46 seconds deallocating stuff?</p>



<a name="209140986"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209140986" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209140986">(Sep 04 2020 at 21:06)</a>:</h4>
<p>more seriously, I do wonder whether it makes sense to suggest e.g. gcc build farm</p>



<a name="209141046"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209141046" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209141046">(Sep 04 2020 at 21:07)</a>:</h4>
<p><span class="user-mention" data-user-id="211727">@Jonas Schievink</span> probably because that's dropping basically all compiler state which probably needs to walk a <em>ton</em> of memory</p>



<a name="209141056"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209141056" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209141056">(Sep 04 2020 at 21:07)</a>:</h4>
<p>I feel like the compile times would be more tolerable if things weren't swapping to disk all the time</p>



<a name="209141074"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209141074" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209141074">(Sep 04 2020 at 21:07)</a>:</h4>
<p>but also compile times are decent for me already so my opinion shouldn't count for much :P</p>



<a name="209141162"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209141162" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209141162">(Sep 04 2020 at 21:08)</a>:</h4>
<p>We should probably make it a goal that compilation of the full tree with -j4 or something succeeds in 4GB</p>



<a name="209141164"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209141164" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jonas Schievink  [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209141164">(Sep 04 2020 at 21:08)</a>:</h4>
<p>I also "solved" this with a 12-core CPU, but... we should be able to do better</p>



<a name="209141269"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209141269" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209141269">(Sep 04 2020 at 21:09)</a>:</h4>
<p>Something like "1GB RAM per core permitted" seems like a reasonable constraint, though we probably need at least a few gigabytes no matter how many cores you have</p>



<a name="209141467"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209141467" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209141467">(Sep 04 2020 at 21:10)</a>:</h4>
<p>I mean, I don't think we need to make compiling with 2 GB a goal or anything like that</p>



<a name="209141475"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209141475" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209141475">(Sep 04 2020 at 21:11)</a>:</h4>
<p>but people shouldn't need to buy new hardware to work on the compiler</p>



<a name="209141615"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209141615" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209141615">(Sep 04 2020 at 21:12)</a>:</h4>
<p>sure, but I think compiling in 4 GB is a reasonable goal -- that's about how much free RAM an 8gb computer is likely to have at ~idle with a browser and some other stuff open</p>



<a name="209141637"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209141637" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209141637">(Sep 04 2020 at 21:12)</a>:</h4>
<p>and 4gb/8gb computers are pretty common for entry-level hardware today</p>



<a name="209141758"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209141758" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209141758">(Sep 04 2020 at 21:14)</a>:</h4>
<p>When I see complaints about "2 hour" long compiles for compiler, I have to think 1) they're going to stage 2 (which is now fixed!) and 2) they're hitting swap. Is there anyway we could detect that and just print a message at the end of the ./x.py script like "consider lowering the concurrent job count with -j 2"?</p>



<a name="209141940"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209141940" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209141940">(Sep 04 2020 at 21:16)</a>:</h4>
<blockquote>
<p>2) they're hitting swap</p>
</blockquote>
<p>I hit swap even on my beefy machine btw</p>



<a name="209141960"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209141960" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209141960">(Sep 04 2020 at 21:16)</a>:</h4>
<p>with 8 GB of RAM running nothing else</p>



<a name="209141996"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209141996" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209141996">(Sep 04 2020 at 21:17)</a>:</h4>
<p>8GB of RAM in a beefy machine is probably the problem there, though</p>



<a name="209142007"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209142007" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209142007">(Sep 04 2020 at 21:17)</a>:</h4>
<p>I wonder how hard it is to detect swap</p>



<a name="209142009"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209142009" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209142009">(Sep 04 2020 at 21:17)</a>:</h4>
<p>you right <span aria-label="laughing" class="emoji emoji-1f606" role="img" title="laughing">:laughing:</span></p>



<a name="209142030"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209142030" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> cjgillot <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209142030">(Sep 04 2020 at 21:17)</a>:</h4>
<p>Is there a way to tell cargo to forbid/limit parallelism when compiling some specific crates ?</p>



<a name="209142096"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209142096" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209142096">(Sep 04 2020 at 21:18)</a>:</h4>
<p><span class="user-mention" data-user-id="248906">@cjgillot</span> not to my knowledge, and it would be pretty hard to add in I think</p>



<a name="209142124"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209142124" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209142124">(Sep 04 2020 at 21:18)</a>:</h4>
<p>That said, I guess the better solution is probably some kind of ram-use limit in addition to the CPU threads jobserver we have now</p>



<a name="209142650"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209142650" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209142650">(Sep 04 2020 at 21:25)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116458">Charles Lew</span> <a href="#narrow/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit/near/209136478">said</a>:</p>
<blockquote>
<div class="codehilite"><pre><span></span><code>-- Installing: L:/ThirdParty/rust/rust-workdir/build/x86_64-pc-windows-msvc/llvm/lib/cmake/llvm/./VersionFromVCS.cmake
cargo:root=L:\ThirdParty\rust\rust-workdir\build\x86_64-pc-windows-msvc\llvm
        finished in 3096.635
</code></pre></div>


<p>Actually quite a large part (a quarter of it?) of llvm building is building all sorts of executables, which rust doesn't use at all, i think.</p>
</blockquote>
<p>Rust does use <em>some</em> of those executables.</p>



<a name="209143425"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209143425" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209143425">(Sep 04 2020 at 21:37)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116122">simulacrum</span> <a href="#narrow/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit/near/209141996">said</a>:</p>
<blockquote>
<p>8GB of RAM in a beefy machine is probably the problem there, though</p>
</blockquote>
<p>I had a similar program with my machine which is why I'm now at 16 threads 32gb RAM. Running like 10 linker jobs while rustc_middle is compiling eats a lot of RAM.</p>



<a name="209146498"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209146498" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209146498">(Sep 04 2020 at 22:25)</a>:</h4>
<p>If someone here wants to review <a href="https://github.com/rust-lang/rust/pull/76332">https://github.com/rust-lang/rust/pull/76332</a>, I'd appreciate it. It's the first step to getting CI-built LLVM usable locally (which I am able to do locally already, just posting that as a separate PR shortly).</p>



<a name="209147948"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209147948" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mark-i-m <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209147948">(Sep 04 2020 at 22:52)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116083">pnkfelix</span> <a href="#narrow/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit/near/209105834">said</a>:</p>
<blockquote>
<p>and so I can imagine our contributors having a similar worry, unless it were explicitly stated to be an encouraged workflow</p>
</blockquote>
<p>At the moment, I think the Getting Started guide actually does mention this strategy, but it still feels a bit hacky to use CI like this...</p>



<a name="209147962"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209147962" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209147962">(Sep 04 2020 at 22:53)</a>:</h4>
<p>I've done that before, and always felt bad/dumb about it.</p>



<a name="209148294"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209148294" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209148294">(Sep 04 2020 at 22:59)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116122">simulacrum</span> <a href="#narrow/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit/near/209146498">said</a>:</p>
<blockquote>
<p>If someone here wants to review <a href="https://github.com/rust-lang/rust/pull/76332">https://github.com/rust-lang/rust/pull/76332</a>, I'd appreciate it. It's the first step to getting CI-built LLVM usable locally (which I am able to do locally already, just posting that as a separate PR shortly).</p>
</blockquote>
<p>I don't know <em>too</em> much about bootstrap but it looks reasonable. Thanks for working on this!</p>



<a name="209148711"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209148711" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mark-i-m <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209148711">(Sep 04 2020 at 23:05)</a>:</h4>
<p>So I just skimmed the thread.... re: using CI as replacement for a good machine. I would agree with <span class="user-mention" data-user-id="116083">@pnkfelix</span> that it's not a great workaround for all the reasons mentioned in the thread. If we wanted to go this route, I would say we should instead provide a build farm (not sure how feasible/expensive that is) and some sort of command to submit tasks and get the artifacts back easily (e.g. something like bazel, I guess).</p>



<a name="209148791"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209148791" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mark-i-m <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209148791">(Sep 04 2020 at 23:07)</a>:</h4>
<p>Alternately, shipping precompiled versions of the different compiler crates could be a big help (and then only build what changed)... though I guess if you're working on <code>rustc_span</code> or something like that, it would be useless.</p>



<a name="209148857"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209148857" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209148857">(Sep 04 2020 at 23:08)</a>:</h4>
<p>I'm off for the night, probably, but I'm optimistic about getting the LLVM work ready to go this weekend for at least beta-testing (with it off by default, but we can recommend in rustc-dev-guide etc)</p>



<a name="209148858"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209148858" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mark-i-m <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209148858">(Sep 04 2020 at 23:08)</a>:</h4>
<p>Long term, I think my vision is to have something similar to what <span class="user-mention" data-user-id="133169">@matklad</span> described. <span class="user-mention" data-user-id="116122">@simulacrum</span> and I had some discussion about something like this a while back. Basically, we would use the beta to build <code>std</code>/etc</p>



<a name="209148868"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209148868" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mark-i-m <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209148868">(Sep 04 2020 at 23:08)</a>:</h4>
<p>and then we could also try to shift towards using cargo instead of x.py</p>



<a name="209148989"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209148989" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mark-i-m <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209148989">(Sep 04 2020 at 23:11)</a>:</h4>
<p>This discussion I think: <a href="#narrow/stream/182449-t-compiler.2Fhelp/topic/why.20stage.202.3F">https://rust-lang.zulipchat.com/#narrow/stream/182449-t-compiler.2Fhelp/topic/why.20stage.202.3F</a></p>



<a name="209150381"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209150381" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209150381">(Sep 04 2020 at 23:39)</a>:</h4>
<p>One thing I do think is fine for people to use CI to do: running <em>all</em> the tests.  So long as people run some related tests locally, I think it's fine for them to not run all the rest -- or at least I hope so, since I certainly don't.  (I run more than I used to now, but just running the <code>ui</code> tests will saturate all 32 hyperthreads and most of a very fast PCIe NVMe drive for a while...)</p>



<a name="209150659"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209150659" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209150659">(Sep 04 2020 at 23:44)</a>:</h4>
<p>yes I definitely don't run all the tests locally</p>



<a name="209150675"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209150675" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209150675">(Sep 04 2020 at 23:45)</a>:</h4>
<p>the thing I think is crucial is getting a <em>stage1 build</em> locally, because otherwise you can't run the debugger/use rustc_log/etc</p>



<a name="209154979"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209154979" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209154979">(Sep 05 2020 at 01:28)</a>:</h4>
<p>a somewhat related question: is it possible for tools to build against the latest nightly instead of building stage1 rustc from source?</p>



<a name="209154991"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209154991" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209154991">(Sep 05 2020 at 01:29)</a>:</h4>
<p>I think clippy and rustfmt might already do this</p>



<a name="209154993"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209154993" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209154993">(Sep 05 2020 at 01:29)</a>:</h4>
<p>but rustdoc definitely requires a stage1 build currently</p>



<a name="209161921"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209161921" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Charles Lew <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209161921">(Sep 05 2020 at 04:59)</a>:</h4>
<p>I set RUSTFLAGS_BOOTSTRAP from "<code>-Z self-profile</code>" to "" and a huge rebuild was triggered... Is it possible to make it smarter here?</p>



<a name="209162299"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209162299" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Charles Lew <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209162299">(Sep 05 2020 at 05:10)</a>:</h4>
<p>This time, it's an incremental build, and</p>
<div class="codehilite"><pre><span></span><code>[RUSTC-TIMING] rustc_middle test:false 364.645
</code></pre></div>


<p>But since there's no code change at all i do think it can be perhaps be a little faster.</p>



<a name="209162365"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209162365" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Charles Lew <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209162365">(Sep 05 2020 at 05:13)</a>:</h4>
<p>build done.</p>
<div class="codehilite"><pre><span></span><code>[RUSTC-TIMING] rustc_driver test:false 176.478
   Compiling rustc-main v0.0.0 (L:\ThirdParty\rust\rust-workdir\compiler\rustc)
[RUSTC-TIMING] rustc_main test:false 1.824
    Finished release [optimized] target(s) in 15m 29s
</code></pre></div>



<a name="209166917"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209166917" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209166917">(Sep 05 2020 at 07:57)</a>:</h4>
<p>I have a machine with like 16 gig, 8 gig available (before digging through and freeing anything)<br>
, and it still takes me forever to build (because it's an i5-3210M)</p>



<a name="209169124"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209169124" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209169124">(Sep 05 2020 at 09:05)</a>:</h4>
<p>recently fixed-ish the screen on my machine with 32gb tho', so let's see how building rustc in a tmpfs goes. :^)</p>



<a name="209170849"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209170849" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lzutao <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209170849">(Sep 05 2020 at 09:57)</a>:</h4>
<p>sorry, wrong thread.</p>



<a name="209171682"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209171682" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209171682">(Sep 05 2020 at 10:23)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232545">Joshua Nelson</span> <a href="#narrow/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit/near/209107490">said</a>:</p>
<blockquote>
<p>the git trees for submodules are shared</p>
</blockquote>
<p>they are not on my system... I did some special hacks to share them for llvm, but I am pretty sure it is not the default</p>



<a name="209171729"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209171729" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209171729">(Sep 05 2020 at 10:24)</a>:</h4>
<p>big <span aria-label="+1" class="emoji emoji-1f44d" role="img" title="+1">:+1:</span> for downloading precompiled LLVM; by laptop isn't beefy but also far from slow and LLVM upgrades are a major pain with builds taking 30min or so (a stage1 build otherwise is &lt;10min). Huge <span aria-label="heart" class="emoji emoji-2764" role="img" title="heart">:heart:</span> to <span class="user-mention" data-user-id="116122">@simulacrum</span> for working on this. :)</p>



<a name="209171781"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209171781" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209171781">(Sep 05 2020 at 10:26)</a>:</h4>
<p>re <span class="user-mention" data-user-id="133169">@matklad</span>'s proposals, I have to say I am rather skeptical of making rustc build with beta libstd. for things like intrinsics and lang items, I think that will be a huge pain. And it by no means removes the need for <code>cfg(bootstrap)</code>, it rather shifts it to rsutc itself -- which now needs to build with beta libstd and master libstd, and will likely require <code>cfg</code> tricks to make that work.</p>



<a name="209171848"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209171848" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209171848">(Sep 05 2020 at 10:28)</a>:</h4>
<blockquote>
<p>IIRC, the issue with middle is the query system, which generates a lot of code for each of the 300 queries. Most of the codegen time is there. Refactoring it may be required at some point.</p>
</blockquote>
<p><span class="user-mention" data-user-id="248906">@cjgillot</span> for the reference, that was exactly the problem in rust-analyzer. We were able to get <strong>6x</strong> reduction in <code>cargo llvm-lines</code> by making the physical architecture of our query system more sound. I can't give a number for wall-clock compile times, but they also went up down significantly. </p>
<p>I am not sure if rustc has exactly the same problem, but let me share some details about rust-analyzer's case.</p>
<p>So, originally all query functions were generic over the "database". This caused two problems:</p>
<ul>
<li>first, no codegen happend in the crates that defined the queries. IE, the type-checker crate was pretty fast to compile, but just because it didn't bother to generate any code at all, pushing this time to the consumers. </li>
<li>second, each query was monomorphised many times, once for each consumer (there's no -Zshared-generics in release happening). With N layers, you get N^2 of code gen, which is as bad as it sounds.</li>
</ul>
<p>The high-level fix was "make sure that all the codegen happens in the upstream crate". Or, equivalently, all <code>pub</code> functions must be non-generic. </p>
<p>The impl of the fix was to <code>dyn</code> everything.</p>



<a name="209171969"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209171969" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209171969">(Sep 05 2020 at 10:32)</a>:</h4>
<p><span class="user-mention" data-user-id="133169">@matklad</span> do you have run-time performance stats on that?</p>



<a name="209171972"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209171972" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209171972">(Sep 05 2020 at 10:32)</a>:</h4>
<blockquote>
<p>for things like intrinsics and lang items, I think that will be a huge pain. </p>
</blockquote>
<p><span class="user-mention" data-user-id="120791">@RalfJ</span> <code>rustc</code> will use <code>master</code> <code>libstd</code> to compile user's code. That is, <code>libstd</code> we use to compiler <code>rustc</code> and <code>libstd</code>used by <code>rustc</code> to compile user code need not be related (like, we can even write <code>rustc</code> in C++).</p>



<a name="209171984"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209171984" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209171984">(Sep 05 2020 at 10:33)</a>:</h4>
<p><span class="user-mention" data-user-id="133169">@matklad</span> with staging they either must be related or we need to keep two stds around in tree or something</p>



<a name="209171987"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209171987" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209171987">(Sep 05 2020 at 10:33)</a>:</h4>
<p><span class="user-mention" data-user-id="133169">@matklad</span> stage 2 rustc will use master libstd I assume? otherwise a bootstrap bump is going to be a big pain</p>



<a name="209172033"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209172033" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209172033">(Sep 05 2020 at 10:34)</a>:</h4>
<p>(we must build rustc twice - the second time around must have in-tree std, just because you don't have any other std)</p>



<a name="209172035"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209172035" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209172035">(Sep 05 2020 at 10:34)</a>:</h4>
<p>also, the pain I was referring to is introducing a new lang item or intrinsic, and making use of it -- which would involve waiting for 6 weeks untilt eh new thing is in beta libstd, or so?</p>



<a name="209172043"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209172043" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mati865 <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209172043">(Sep 05 2020 at 10:34)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232545">Joshua Nelson</span> <a href="#narrow/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit/near/209154991">said</a>:</p>
<blockquote>
<p>I think clippy and rustfmt might already do this</p>
</blockquote>
<p>Clippy just like rustdoc build only with master. It's CI downloads the latest build with <code>rustup-toolchain-install-master</code>.</p>



<a name="209172092"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209172092" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209172092">(Sep 05 2020 at 10:36)</a>:</h4>
<blockquote>
<p>also, the pain I was referring to is introducing a new lang item or intrinsic, and making use of it -- which would involve waiting for 6 weeks untilt eh new thing is in beta libstd, or so?</p>
</blockquote>
<p>Using intrinsic in the compiler would require waiting 6 weeks. Generated the code that uses the intrinsic does not require waiting six weeks. Using intrinsic in libstd does not require waiting six weeks.</p>



<a name="209172163"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209172163" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209172163">(Sep 05 2020 at 10:39)</a>:</h4>
<p><span class="user-mention" data-user-id="116122">@simulacrum</span> found some numbers</p>
<ul>
<li>wall-clock compile times, 3x decrease: <a href="https://github.com/rust-analyzer/rust-analyzer/issues/1987#issuecomment-654697310">https://github.com/rust-analyzer/rust-analyzer/issues/1987#issuecomment-654697310</a></li>
<li>runtime-perf difference, in the noise: <a href="https://github.com/rust-analyzer/rust-analyzer/pull/5242#issuecomment-654709072">https://github.com/rust-analyzer/rust-analyzer/pull/5242#issuecomment-654709072</a></li>
</ul>
<p>But runtime-perf should be taken with 16.38 kilos of salt -- rust-analyzer's runtime is generally "horribly slow", it's a soup of <code>Arc</code>s and wasn't nearly as good optimized as <code>rustc</code>. So, the finding is "if your code is already pretty slow, <code>dyn</code> doesn't make it slower"</p>



<a name="209172165"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209172165" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209172165">(Sep 05 2020 at 10:39)</a>:</h4>
<p><span class="user-mention" data-user-id="133169">@matklad</span> if in-tree libstd has to build with the beta compiler, it cannot use new intrinsics</p>



<a name="209172216"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209172216" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209172216">(Sep 05 2020 at 10:40)</a>:</h4>
<p>Hm, riiight, we'd need <code>cfg(bootstrap)</code> for std for that (but we need it today anyway, right? We do build libstd with beta?)</p>



<a name="209172217"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209172217" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209172217">(Sep 05 2020 at 10:40)</a>:</h4>
<p>std and rustc have a very close interaction for intrinsics and lang items, there is basically a 1:1 mapping of compatible rustc's and libstd'. I do not think there is a good way to break that apart.</p>



<a name="209172222"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209172222" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209172222">(Sep 05 2020 at 10:41)</a>:</h4>
<p><span class="user-mention silent" data-user-id="133169">matklad</span> <a href="#narrow/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit/near/209172216">said</a>:</p>
<blockquote>
<p>Hm, riiight, we'd need <code>cfg(bootstrap)</code> for std for that (but we need it today anyway, right? We do build libstd with beta?)</p>
</blockquote>
<p>yeah we disable new intrinsics via <code>cfg(bootstrap)</code></p>



<a name="209172227"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209172227" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209172227">(Sep 05 2020 at 10:41)</a>:</h4>
<p>so they get included in stage 1 std only</p>



<a name="209172271"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209172271" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209172271">(Sep 05 2020 at 10:42)</a>:</h4>
<p>with your proposal... we'd probably need to do the same for all of rustc? have <code>cfg(bootstrap)</code> to determine if this is built against the bootstrap(beta) libstd or the master one</p>



<a name="209172276"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209172276" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209172276">(Sep 05 2020 at 10:42)</a>:</h4>
<p>so that we can use new libstd features in stage 2 at least (which would be a pain to test then)</p>



<a name="209172287"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209172287" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209172287">(Sep 05 2020 at 10:43)</a>:</h4>
<p>not sure what you mean by "this removes bootstrap" but I think that's impossible unless we re-implement rustc in another language^^</p>



<a name="209172348"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209172348" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209172348">(Sep 05 2020 at 10:45)</a>:</h4>
<blockquote>
<p>std and rustc have a very close interaction for intrinsics and lang items,</p>
</blockquote>
<p>I think there's a misunderstanding here, which would be valuable to tease apart. I claim that std and rustc <em>can not</em> have close interraction for intrinsics and lang items. Proof: you can rewrite rustc in Python. </p>
<p>I <em>think</em> the confusion stems from the fact that there are two std's in play here. One std is used to build the compiler itself. Another std is used by the code, generated by the compiler, and is compiled by the compiler. The two std's don't need to be related.</p>



<a name="209172461"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209172461" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209172461">(Sep 05 2020 at 10:48)</a>:</h4>
<p>The high-level think I am pushing here is that I want rustc to be just a bog-standard rust program. Which means that it should use the <code>cargo build</code> sysroot.</p>
<p>I guess, there is also a middle ground here by adding "custom std" feature to Cargo <span aria-label="thinking" class="emoji emoji-1f914" role="img" title="thinking">:thinking:</span></p>



<a name="209172967"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209172967" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209172967">(Sep 05 2020 at 11:04)</a>:</h4>
<p>Hm, I've noticed that I am confused (along the axis orthogonal to the discussion). I guess, I'll investigate how exactly our bootstraping works and then try to write down something more coherent (but definitelly with a "everything is just a crate" in mind)</p>



<a name="209173149"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209173149" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209173149">(Sep 05 2020 at 11:08)</a>:</h4>
<p>(my specific confusion: I wonder if we can get rid of <code>cfg(bootstrap)</code> in libstd? We need that to be able to build std with beta, and we need that to build <code>rustc</code> with beta, which needs <code>master</code> libstd. But if we build <code>rustc</code> with <code>beta</code> std, we compile <code>master</code> <code>std</code> with only <code>master</code> <code>rustc</code>, which would be a setup for non-bootsrapping languages. This makes contributing to std a pain, but moves us fully into the "just a crate" world)</p>



<a name="209173439"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209173439" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209173439">(Sep 05 2020 at 11:17)</a>:</h4>
<p>For the consideration of the gathered re: <code>cargo llvm-lines</code> on rustc_middle</p>
<div class="codehilite"><pre><span></span><code>  Lines           Copies         Function name
  -----           ------         -------------
  7668776 (100%)  240632 (100%)  (TOTAL)
   223241 (2.9%)    3437 (1.4%)  core::option::Option&lt;T&gt;::map
   185588 (2.4%)   13396 (5.6%)  core::ptr::drop_in_place
   152646 (2.0%)    1804 (0.7%)  core::iter::traits::iterator::Iterator::fold
   151689 (2.0%)     857 (0.4%)  &lt;core::iter::adapters::flatten::FlattenCompat&lt;I,U&gt; as core::iter::traits::iterator::Iterator&gt;::size_hint
   131341 (1.7%)    1504 (0.6%)  alloc::vec::Vec&lt;T&gt;::extend_desugared
   124009 (1.6%)    1677 (0.7%)  std::thread::local::LocalKey&lt;T&gt;::try_with
   116431 (1.5%)    1491 (0.6%)  &lt;alloc::vec::Vec&lt;T&gt; as alloc::vec::SpecExtend&lt;T,I&gt;&gt;::from_iter
   106280 (1.4%)    1504 (0.6%)  &lt;alloc::vec::Vec&lt;T&gt; as alloc::vec::SpecExtend&lt;T,I&gt;&gt;::spec_extend
   105526 (1.4%)     694 (0.3%)  &lt;core::iter::adapters::flatten::FlattenCompat&lt;I,U&gt; as core::iter::traits::iterator::Iterator&gt;::next
   103376 (1.3%)     568 (0.2%)  alloc::raw_vec::RawVec&lt;T,A&gt;::grow_amortized
    90200 (1.2%)     328 (0.1%)  hashbrown::raw::RawTable&lt;T&gt;::rehash_in_place
    76125 (1.0%)     580 (0.2%)  &lt;rustc_query_system::query::caches::DefaultCache&lt;K,V&gt; as rustc_query_system::query::caches::QueryCache&gt;::iter
    72602 (0.9%)     172 (0.1%)  rustc_query_system::dep_graph::graph::DepGraph&lt;K&gt;::with_task_impl
    70146 (0.9%)    1290 (0.5%)  &lt;core::iter::adapters::Map&lt;I,F&gt; as core::iter::traits::iterator::Iterator&gt;::fold
    69687 (0.9%)    1290 (0.5%)  core::iter::adapters::map_fold::{{closure}}
    68782 (0.9%)     209 (0.1%)  smallvec::SmallVec&lt;A&gt;::try_grow
    65952 (0.9%)     916 (0.4%)  core::alloc::layout::Layout::array
</code></pre></div>


<p>With unabridged version here: <a href="https://gist.githubusercontent.com/workingjubilee/54b8e28602ea5ffd4b2db748f86a6354/raw/249f24464665bc2111f91eb522865a51f1fbf56d/rustc_middle_cargo_llvm_lines.txt">https://gist.githubusercontent.com/workingjubilee/54b8e28602ea5ffd4b2db748f86a6354/raw/249f24464665bc2111f91eb522865a51f1fbf56d/rustc_middle_cargo_llvm_lines.txt</a></p>



<a name="209174122"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209174122" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209174122">(Sep 05 2020 at 11:38)</a>:</h4>
<p>Wow, I would never have guessed <code>flat_map</code>/<code>flatten</code>'s <code>size_hint</code>, of all things, being that far up there.</p>



<a name="209174372"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209174372" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Charles Lew <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209174372">(Sep 05 2020 at 11:47)</a>:</h4>
<p>Just out of curiosity: <code>Option::map</code> is already <code>#[inline]</code>, why is it still taking so many lines?</p>



<a name="209174414"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209174414" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209174414">(Sep 05 2020 at 11:48)</a>:</h4>
<p>Like, it takes so many lines <em>because</em> it is inline.</p>
<p>EDIT: this sounds way more confident than I am actually is, but I indeed would expect <code>inline</code>  functions to ballon the amount of code compiled</p>



<a name="209174827"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209174827" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209174827">(Sep 05 2020 at 12:00)</a>:</h4>
<p>Under that thesis, _removing_ #[inline] might be a significant improvement.</p>



<a name="209175101"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209175101" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209175101">(Sep 05 2020 at 12:09)</a>:</h4>
<p>It's already generic and getting codegen'd into any use site anyway, so inline shouldn't have significant effect I suspect. It's more likely "rustc has a ton of different types inside option"</p>



<a name="209175591"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209175591" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209175591">(Sep 05 2020 at 12:24)</a>:</h4>
<p><span class="user-mention silent" data-user-id="119581">mati865</span> <a href="#narrow/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit/near/209172043">said</a>:</p>
<blockquote>
<p><span class="user-mention silent" data-user-id="232545">Joshua Nelson</span> <a href="#narrow/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit/near/209154991">said</a>:</p>
<blockquote>
<p>I think clippy and rustfmt might already do this</p>
</blockquote>
<p>Clippy just like rustdoc build only with master. It's CI downloads the latest build with <code>rustup-toolchain-install-master</code>.</p>
</blockquote>
<p>how would I set that up? right now rustdoc requires building stage1 locally, but I'd love to install artifacts from master instead</p>



<a name="209176727"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209176727" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mati865 <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209176727">(Sep 05 2020 at 12:55)</a>:</h4>
<p>I'm on the mobile atm, you should lookup Clippy repo.</p>



<a name="209176769"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209176769" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mati865 <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209176769">(Sep 05 2020 at 12:56)</a>:</h4>
<p>Contributing swction</p>



<a name="209182398"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209182398" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209182398">(Sep 05 2020 at 15:10)</a>:</h4>
<p>also some RUSTC-TIMING results were shared earlier and on my computer these are the big offenders.</p>
<div class="codehilite"><pre><span></span><code>[RUSTC-TIMING] rustc_infer test:false 131.036
[RUSTC-TIMING] rustc_metadata test:false 145.150
[RUSTC-TIMING] rustc_resolve test:false 111.723
[RUSTC-TIMING] rustc_passes test:false 111.536
[RUSTC-TIMING] rustc_codegen_llvm test:false 187.410
[RUSTC-TIMING] rustc_mir_build test:false 100.226
[RUSTC-TIMING] rustc_trait_selection test:false 196.653
[RUSTC-TIMING] rustc_typeck test:false 263.873
[RUSTC-TIMING] rustc_mir test:false 246.130
[RUSTC-TIMING] rustc_middle test:false 467.649
</code></pre></div>


<p>So yes, rustc_middle is huge and that's a problem, but if it's _hard_ to solve rustc_middle, and these can be fixed on a scale of 4x more easily, then improvements there matter a lot.</p>



<a name="209188586"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209188586" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> cjgillot <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209188586">(Sep 05 2020 at 17:51)</a>:</h4>
<p><span class="user-mention silent" data-user-id="133169">matklad</span> <a href="#narrow/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit/near/209171848">said</a>:</p>
<blockquote>
<p>The high-level fix was "make sure that all the codegen happens in the upstream crate". Or, equivalently, all <code>pub</code> functions must be non-generic. </p>
<p>The impl of the fix was to <code>dyn</code> everything.</p>
</blockquote>
<p>There is already a trick in use so that all the query codegen happens in rustc_middle. Incidentally, this is why this crate is so painful in full builds.</p>



<a name="209202047"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209202047" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209202047">(Sep 06 2020 at 00:36)</a>:</h4>
<p>Oh, and it went unaddressed but re: "2 hour long compiles are stage 2" from a while back, I have had machines which basically hit the better part of 2 hours just because LLVM would take the entire first hour plus some, so I don't think that's the case, honestly. Probably "ship a patched LLVM with beta-rustc to bootstrap on" will be the biggest gain as a direct result. I mostly quit trying to contribute until I fixed my computer issues, which then became... way too much of an adventure.</p>



<a name="209220793"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209220793" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209220793">(Sep 06 2020 at 11:17)</a>:</h4>
<blockquote>
<p>I think there's a misunderstanding here, which would be valuable to tease apart. I claim that std and rustc can not have close interraction for intrinsics and lang items. Proof: you can rewrite rustc in Python. </p>
</blockquote>
<p>That other rustc would have to be exactly like the real one in all sorts of private implementation details, or else it needs its own standard library.<br>
You can rewrite <em>any program</em> in <em>any other language</em> if you keep the observable behavior (syscall interactions) the same. So I don't see how this statement proves anything.</p>



<a name="209220922"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209220922" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209220922">(Sep 06 2020 at 11:21)</a>:</h4>
<blockquote>
<p>The high-level think I am pushing here is that I want rustc to be just a bog-standard rust program. Which means that it should use the cargo build sysroot.</p>
</blockquote>
<p>rustc uses many many nightly features both of the compiler and the standard library. that's very helpful also to figured out of those features work as intended. I think in the best possible case your proposal will add a 6 week delay between adding a feature to libstd and using it in rustc, which would be really painful.<br>
and -- what for? building the standard library takes around 60s. I don't think all this pain and complexity is justified for saving 60s.</p>



<a name="209819893"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209819893" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209819893">(Sep 11 2020 at 18:47)</a>:</h4>
<p>ok, writing this down so I don't forget: there are currently four major things I want do do with bootstrap:</p>
<ol>
<li><a href="https://github.com/rust-lang/rust/issues/76380">https://github.com/rust-lang/rust/issues/76380</a>, adding a stable version for distributors and other people compiling from source without intending to make changes</li>
<li><a href="https://github.com/rust-lang/rust/issues/76165">https://github.com/rust-lang/rust/issues/76165</a>, making bootstrap even more flexible by letting you configure the stage. This would make things a lot easier for people only working on the standard library, since they can set <code>default-stage = 0</code> or whatever syntax, instead of having to pass <code>--stage 0</code> each time.</li>
<li><a href="https://github.com/rust-lang/rust/issues/76503">https://github.com/rust-lang/rust/issues/76503</a>, applying some recommended defaults automatically, but in an opt-in way. Since changing defaults for everyone is controversial and not always possible, this makes it easier to configure bootstrap without having to go through a 600 line TOML file.</li>
<li><a href="https://github.com/rust-lang/compiler-team/issues/351">https://github.com/rust-lang/compiler-team/issues/351</a>, making <code>x.py build</code> take less time by not building tools</li>
</ol>
<p>I plan to work on this over the weekend and split the changes up as much as possible, but 1 would be a lot easier to do if I did 4 simultaneously so those two might end up getting merged.</p>
<p>Another idea I had just now was to suggest running <code>x.py setup</code> the very first time you run x.py to make it more discoverable, then you don't even have to look at the documentation to find it.</p>



<a name="209820018"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209820018" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209820018">(Sep 11 2020 at 18:48)</a>:</h4>
<p>a lot of these play really well with one another: if you use the stable version of bootstrap you won't get suggestions/extra output, if the default stage can be configured <code>x.py setup</code> can do that automatically</p>



<a name="209843895"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209843895" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209843895">(Sep 11 2020 at 22:42)</a>:</h4>
<p>More discussion about this in <br>
<a href="#narrow/stream/242791-t-infra/topic/Planning.20x.2Epy's.20future">https://rust-lang.zulipchat.com/#narrow/stream/242791-t-infra/topic/Planning.20x.2Epy's.20future</a></p>



<a name="209893136"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209893136" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209893136">(Sep 12 2020 at 18:11)</a>:</h4>
<p>See the second part of <a href="https://matklad.github.io/2020/09/12/rust-in-2021.html">https://matklad.github.io/2020/09/12/rust-in-2021.html</a> for a somewhat more coherent description of "getting rid of bootstrap" idea</p>



<a name="209894707"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209894707" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> cuviper <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209894707">(Sep 12 2020 at 18:51)</a>:</h4>
<p>My only flag in all of this is "don't forget the distros"! Whatever we do to make nice defaults, it still needs to be <em>possible</em> to build with system rustc (matching rustc N-1 <em>or</em> the same N) and system LLVM, totally offline. I think Mark has a good handle on this, but please feel free to ping me if there's any question.</p>



<a name="209894755"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209894755" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209894755">(Sep 12 2020 at 18:52)</a>:</h4>
<p>yes, I'm keeping an eye on that with every patch for sure</p>



<a name="209894763"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209894763" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209894763">(Sep 12 2020 at 18:53)</a>:</h4>
<p>it'll probably get <em>harder</em> in the sense that there will be more things to toggle as we move towards "download more by default", I suspect</p>



<a name="209894815"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209894815" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> cuviper <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209894815">(Sep 12 2020 at 18:54)</a>:</h4>
<p>as long as that's clearly communicated, fine. harder is not a problem as long as I know what to do, and can automate that in my rpm spec</p>



<a name="209894847"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209894847" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> cuviper <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209894847">(Sep 12 2020 at 18:55)</a>:</h4>
<p>maybe something like <code>./configure --offline ...</code> can disable all areas of "download by default"</p>



<a name="209894900"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209894900" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209894900">(Sep 12 2020 at 18:56)</a>:</h4>
<p>yeah :)</p>



<a name="209894904"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209894904" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209894904">(Sep 12 2020 at 18:56)</a>:</h4>
<p>we are working with <span class="user-mention" data-user-id="232545">@Joshua Nelson</span> to get a changelog going for changes to rustbuild which should be a big help here</p>



<a name="209895267"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209895267" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209895267">(Sep 12 2020 at 19:05)</a>:</h4>
<p><a href="https://github.com/rust-lang/rust/pull/76626">https://github.com/rust-lang/rust/pull/76626</a></p>



<a name="209895338"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209895338" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209895338">(Sep 12 2020 at 19:07)</a>:</h4>
<p>Most of the new changes I'm making are opt-in as well, the only thing that changes unconditionally is adding a warning if you don't have config.toml/haven't looked at the changelog</p>



<a name="209895343"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209895343" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209895343">(Sep 12 2020 at 19:07)</a>:</h4>
<p>I can make the warning opt-out if you like as well</p>



<a name="209895903"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209895903" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> cuviper <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209895903">(Sep 12 2020 at 19:20)</a>:</h4>
<p>for my part, I'll have a <code>config.toml</code> via running <code>./configure</code></p>



<a name="209896000"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209896000" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> cuviper <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209896000">(Sep 12 2020 at 19:22)</a>:</h4>
<p>that doesn't help the version/changelog safety checks, but that just makes it my responsibility to check that changelog when updating the distro, which is reasonable</p>



<a name="209899505"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209899505" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209899505">(Sep 12 2020 at 20:54)</a>:</h4>
<p><span class="user-mention silent" data-user-id="133169">matklad</span> <a href="#narrow/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit/near/209893136">said</a>:</p>
<blockquote>
<p>See the second part of <a href="https://matklad.github.io/2020/09/12/rust-in-2021.html">https://matklad.github.io/2020/09/12/rust-in-2021.html</a> for a somewhat more coherent description of "getting rid of bootstrap" idea</p>
</blockquote>
<p>this is an interesting blog post. This point especially stood out:</p>
<blockquote>
<p>Third, there’s not much in a way of the unit tests in the compiler. Almost all tests require std, which means that, to test anything, one needs to rebuild everything.</p>
</blockquote>
<p>I guess <code>std</code> here really means <code>core</code> - I'm pretty sure you can add <code>#![no_std]</code> to most of <code>src/test/ui</code> without  a problem. But I definitely see your point - without unit tests, you <em>have</em> to compile rustc_middle for tests no matter what</p>



<a name="209899517"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209899517" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209899517">(Sep 12 2020 at 20:54)</a>:</h4>
<blockquote>
<p>Downgrade rustc’s libstd requirements to beta. Note that this refers solely to the std used to build rustc itself. rustc will use master std for building user’s code.</p>
</blockquote>
<p>I like this idea. This would reduce the 'mind-bending' parts of bootstrap a lot I think</p>



<a name="209899533"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209899533" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209899533">(Sep 12 2020 at 20:55)</a>:</h4>
<p>I tried to explain this a little in <a href="https://github.com/rust-lang/rustc-dev-guide/pull/857/files#diff-a68e97a6422485e51b6bc6c8fb23f2d9R156">https://github.com/rust-lang/rustc-dev-guide/pull/857/files#diff-a68e97a6422485e51b6bc6c8fb23f2d9R156</a></p>



<a name="209899547"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209899547" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209899547">(Sep 12 2020 at 20:56)</a>:</h4>
<p>if rustc only depended on beta libstd, then this wouldn't be so confusing, because you wouldn't need to compile <code>--stage 0 library/std</code> at <em>all</em> before building the compiler</p>



<a name="209899607"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209899607" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209899607">(Sep 12 2020 at 20:56)</a>:</h4>
<p>and <code>--stage 1 library/std</code> would be unambiguous: build <code>std</code> for the first time using the <code>rustc</code> that was just built</p>



<a name="209899798"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209899798" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209899798">(Sep 12 2020 at 21:01)</a>:</h4>
<p>Well. I guess that second point isn't very relevant since you want <code>cargo test</code> to work, that would test the version built by beta</p>



<a name="209937377"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209937377" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209937377">(Sep 13 2020 at 15:57)</a>:</h4>
<p><span class="user-mention silent" data-user-id="138448">cuviper</span> <a href="#narrow/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit/near/209894847">said</a>:</p>
<blockquote>
<p>maybe something like <code>./configure --offline ...</code> can disable all areas of "download by default"</p>
</blockquote>
<p>Is it possible we could optimize the <code>./configure</code> workflow for distros? I haven't seen anyone recommend using <code>./configure</code> for contributors in at least a few years.</p>



<a name="209947206"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209947206" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> cuviper <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209947206">(Sep 13 2020 at 19:57)</a>:</h4>
<p>Yeah, maybe <code>./configure</code> alone is enough to signal different defaults</p>



<a name="209947252"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209947252" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209947252">(Sep 13 2020 at 19:58)</a>:</h4>
<p><a href="https://github.com/rust-lang/rust/issues/76619">https://github.com/rust-lang/rust/issues/76619</a> would help with this I think</p>



<a name="209947265"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/209947265" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#209947265">(Sep 13 2020 at 19:59)</a>:</h4>
<p>you could <code>./configure --set include=maintainer</code> and it would automatically use <code>stage = 2</code>, <code>extended = true</code>, <code>offline</code>, etc.</p>



<a name="210943556"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/210943556" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#210943556">(Sep 22 2020 at 23:27)</a>:</h4>
<p>some more discussion about this from the library side on <a href="https://internals.rust-lang.org/t/contributing-changes-to-std/12829">https://internals.rust-lang.org/t/contributing-changes-to-std/12829</a></p>



<a name="221157196"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/improving%20bootstrap%20times%20for%20contributor%20fun%20and%20profit/near/221157196" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit.html#221157196">(Dec 29 2020 at 18:51)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232545">Joshua Nelson</span> <a href="#narrow/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit/near/209175591">said</a>:</p>
<blockquote>
<p><span class="user-mention silent" data-user-id="119581">mati865</span> <a href="#narrow/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit/near/209172043">said</a>:</p>
<blockquote>
<p><span class="user-mention silent" data-user-id="232545">Joshua Nelson</span> <a href="#narrow/stream/131828-t-compiler/topic/improving.20bootstrap.20times.20for.20contributor.20fun.20and.20profit/near/209154991">said</a>:</p>
<blockquote>
<p>I think clippy and rustfmt might already do this</p>
</blockquote>
<p>Clippy just like rustdoc build only with master. It's CI downloads the latest build with <code>rustup-toolchain-install-master</code>.</p>
</blockquote>
<p>how would I set that up? right now rustdoc requires building stage1 locally, but I'd love to install artifacts from master instead</p>
</blockquote>
<p>very long delay but I finally almost have this working <a href="https://github.com/rust-lang/rust/pull/79540">https://github.com/rust-lang/rust/pull/79540</a></p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>